﻿/***********************************************************************
 * <copyright file="IActionSecurityService.cs" company="B/S JSC">
 * -->    Copyright (C) statement. All right reserved
 * </copyright>
 * 
 * Created:   Hoang Bich Son 
 * Email:    sonhb@newman.vn
 * Website:
 * Create Date: Saturday, March 29, 2014
 * Usage: 
 * 
 * RevisionHistory: 
 * Date         Author               Description 
 * 
 * ************************************************************************/

    using System.ServiceModel;
using SecurityService.Messages;

namespace SecurityService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IActionSecurityService" in both code and config file together.
    [ServiceContract(SessionMode = SessionMode.Allowed)]    
    public interface IActionSecurityService
    {
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        TokenResponse GetToken(TokenRequest request);

        /// <summary>
        /// Logins the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        LoginResponse Login(LoginRequest request);

        /// <summary>
        /// Logouts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        LogoutResponse Logout(LogoutRequest request);

        /// <summary>
        /// Sets the sites.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        SiteResponse SetSites(SiteRequest request);

        /// <summary>
        /// Gets the sites.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        SiteResponse GetSites(SiteRequest request);

        /// <summary>
        /// Sets the permissions.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        PermissionResponse SetPermissions(PermissionRequest request);

        /// <summary>
        /// Gets the permissions.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        PermissionResponse GetPermissions(PermissionRequest request);

        /// <summary>
        /// Sets the permission in site.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        PermissionInSiteResponse SetPermissionInSite(PermissionInSiteRequest request);

        /// <summary>
        /// Gets the permission in site.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        PermissionInSiteResponse GetPermissionInSite(PermissionInSiteRequest request);

        /// <summary>
        /// Sets the roles.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        RoleResponse SetRoles(RoleRequest request);

        /// <summary>
        /// Gets the roles.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        RoleResponse GetRoles(RoleRequest request);

        /// <summary>
        /// Sets the role in site.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        RoleInSiteResponse SetRoleInSites(RoleInSiteRequest request);

        /// <summary>
        /// Gets the role in site.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        RoleInSiteResponse GetRoleInSites(RoleInSiteRequest request);

        /// <summary>
        /// Sets the users.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        UserResponse SetUsers(UserRequest request);

        /// <summary>
        /// Gets the users.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        UserResponse GetUsers(UserRequest request);
    }
}
